package com.ccubee.data.transfer.transfer.mod;



import com.ccubee.data.transfer.model.TransferRequest;
import com.ccubee.data.transfer.properties.DataProperties;
import com.ccubee.data.transfer.properties.transfer.DbProperties;
import com.ccubee.data.transfer.transfer.ICall;
import com.ccubee.data.transfer.types.TransferMod;

import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ScheduledExecutorService;

/**
 * 模式
 *
 * @Author ycf
 * @Date 2022/11/14 14:35
 * @Version 1.0
 */
public interface Imod {
    /**
     * 当前模式
     *
     * @return 模式
     */
    TransferMod mod();

    /**
     * 初始化
     *
     * @param instance        实例
     * @param dbProperties    数据库配置
     * @param dataProperties  数据配置
     * @param executor        当前线程池
     * @param executorService 定时任务
     * @return 当前对象
     */
    Imod init(String instance, List<DbProperties> dbProperties, DataProperties dataProperties, ExecutorService executor, ScheduledExecutorService executorService);

    /**
     * 运行任务
     *
     * @param transferRequest 参数
     * @return 结果
     */
    ICall exe(TransferRequest transferRequest);
}
